#!/bin/bash
set -e

################################################################################
# 0. 准备工作路径
################################################################################
WORKDIR="$HOME/vm"
ISO="/run/media/luo/vm/下载/zh-cn_windows_10_consumer_editions_version_22h2_updated_july_2025_x64_dvd_f841fba5.iso"
DISK="$WORKDIR/win10.qcow2"
OVMF_CODE="/usr/share/edk2/x64/OVMF_CODE.4m.fd"   # Archlinux 路径
OVMF_VARS="$WORKDIR/OVMF_VARS.fd"

virtio_win="$WORKDIR/virtio-win.iso"

mkdir -p "$WORKDIR"

################################################################################
# 1. 下载或检查 ISO（如已放好可注释）
################################################################################
# wget -O "$ISO" \
#   https://software-download.microsoft.com/download/pr/Win10_22H2_Chinese_Simplified_x64v1.iso


#https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md

if [[ ! -f "$virtio_win" ]];  then
  wget -O "$virtio_win" https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

fi
#if [[ ! -f "$ISO" ]]; then
# 挂载win10镜像目录，免下载
 #sudo mount -t cifs  //192.168.194.1/e/下载   /mnt   -o 'username=1007052116@qq.com,password=Love0.?!,vers=3.0,iocharset=utf8'
#fi


################################################################################
# 2. 复制一份可写的 UEFI 变量模板
################################################################################
if [[ ! -f "$OVMF_VARS" ]]; then
    cp "/usr/share/edk2/x64/OVMF_VARS.4m.fd" "$OVMF_VARS"
fi

################################################################################
# 3. 创建虚拟磁盘（仅第一次）
################################################################################
if [[ ! -f "$DISK" ]]; then
    echo "Creating 60G qcow2 disk ..."
    qemu-img create -f qcow2 "$DISK" 60G
fi

################################################################################
# 4. 启动安装
################################################################################
echo "Starting Windows 10 installer ..."

# 当前在虚拟机下测试，关闭kvm功能
#  -machine q35,accel=kvm \
exec qemu-system-x86_64 \
  -machine q35,accel=kvm \
  -enable-kvm \
  -cpu host,kvm=on \
  -smp 2 \
  -m 8192 \
  -drive file="$ISO",media=cdrom \
  -drive if=pflash,format=raw,readonly=on,file="$OVMF_CODE" \
  -drive if=pflash,format=raw,file="$OVMF_VARS" \
  -drive file="$DISK",format=qcow2,if=virtio,cache=writeback,discard=unmap \
  -drive file="$virtio_win",media=cdrom \
  -netdev user,id=net0,hostfwd=tcp::3389-:3389 \
  -device virtio-net-pci,netdev=net0 \
  -usb -device usb-tablet \
  -vga std \
  -display vnc=:0,password=off 
#  -boot order=d #menu=on,splash-time=0

# menu=on：强制显示启动菜单
# splash-time=0：停留时间为 0 ms=无限（手动按 Esc 才会继续）
